密碼學是保護現代資訊系統安全的基石,但「密碼學」並不等於「安全」。在資安領域中,密碼學實作是極其常見且致命的漏洞。且長期霸榜OWASP Top 10
許多開發者為了開發方便或簡化部署,選擇直接將加密金鑰或資料庫密碼寫死在程式碼中。這等於「鎖了門,卻把鑰匙插在門鎖上」。
常見的攻擊與洩露場景
版本控制系統外洩(Git Leaks):即使將專案設為Private,或是事後刪除了程式碼中的金鑰,只要金鑰曾被 Commit 過,攻擊者就能透過git log或自動化掃描工具從Git歷史紀錄中挖出金鑰。
用戶端反編譯:
在 Mobile App(Android .apk / iOS .ipa)或前端 JavaScript 中硬編碼的金鑰,攻擊者只需透過反編譯工具或直接檢視前端原始碼,就能輕鬆得到密碼。
金鑰全域共用:
若把同一組預設金鑰編譯進所有發行給客戶的產品中,一旦其中一台設備的金鑰被提取,全部所有使用該產品的客戶都將面臨密碼被破解威脅。
密碼學演算法隨著計算能力提升,會逐漸被破解。繼續在生產環境中使用已經被證明不安全的演算法,就給了攻擊者可乘之機。
要建立強健的密碼學防護,必須要注意以下幾點: